<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="dart.unittest" content="full-stack-traces">
  <title> interop_test.html </title>
  <style>
     .unittest-table { font-family:monospace; border:1px; }
     .unittest-pass { background: #6b3;}
     .unittest-fail { background: #d55;}
     .unittest-error { background: #a11;}
  </style>
  <script src="/packages/web_components/webcomponents.js"></script>
  <script src="/packages/web_components/dart_support.js"></script>
  <script src="/packages/web_components/interop_support.js"></script>
</head>
<body>
  <h1> Running interop_test </h1>
  <script>
    var counter = 0;
    var A = function() {};
    A.prototype = Object.create(HTMLElement.prototype);
    A.prototype.inc = function() { this.x = counter++; };
    A.prototype.createdCallback = function() { this.inc(); };

    var B = function() {};
    B.prototype = Object.create(HTMLDivElement.prototype);
    B.prototype.createdCallback = function() { this.x = counter++; };
    B.extends = 'div';

    var D = function() {};
    D.prototype = Object.create(HTMLElement.prototype);
    D.prototype.inc = function() { this.x = counter++; };
    D.prototype.createdCallback = function() { this.inc(); };

    var E = { prototype: Object.create(D.prototype) };
    E.prototype.inc2 = function() {
      this.y = counter++;
    };
    E.prototype.createdCallback = function() {
      D.prototype.createdCallback.call(this);
      this.inc2();
    };

    document.registerElement('x-a', A);
    document.registerElement('x-b', B);
    document.registerElement('x-d', D);
    document.registerElement('x-e', E);

    function registerC() {
      var proto = Object.create(HTMLElement.prototype, {
        inc: { value: function() { this.x = counter++; } },
        createdCallback: {
          value: function() { this.inc(); },
          configurable: true},
      });
      document.registerElement('x-c', {prototype: proto});
    }
    function addA() {
      document.body.appendChild(document.createElement('x-a'));
    }
    function addB() {
      document.body.appendChild(document.createElement('div', 'x-b'));
    }
    function addC() {
      document.body.appendChild(document.createElement('x-c'));
    }
    function addD() {
      document.body.appendChild(document.createElement('x-d'));
    }
    function addE() {
      document.body.appendChild(document.createElement('x-e'));
    }
  </script>
  <x-a id="i1"></x-a>
  <div is="x-b" id="i2"></div>
  <x-c id="i3"></x-c>
  <x-d id="i4"></x-d>
  <script type="text/javascript"
      src="/root_dart/tools/testing/dart/test_controller.js"></script>
  <script type="application/dart" src="interop_test.dart"></script>
  <script type="text/javascript" src="/packages/browser/dart.js"></script>
</body>
</html>
